Des prompts aux pipelines
L'évolution de l'interaction avec les modèles linguistiques
Dans les leçons précédentes, nous avons porté notre attention sur les interactions à base de prompt unique. Toutefois, les applications du monde réel exigent bien plus qu'une simple question-réponse ponctuelle. Pour concevoir des systèmes d'IA évolutifs, nous devons passer à l'orchestration. Cela consiste à relier plusieurs appels au modèle linguistique, à implémenter une logique de branchement basée sur l'entrée utilisateur, et à permettre au modèle d'interagir avec des données externes.
Les briques fondamentales de l'orchestration
- LLMChain: La pièce maîtresse. Il combine un modèle de prompt avec un modèle linguistique.
- Chaînes séquentielles: Elles vous permettent de créer un flux de travail en plusieurs étapes où la sortie d'une étape devient l'entrée de la suivante.
- Chaînes de routage: Elles agissent comme des "contrôleurs de trafic", utilisant un modèle linguistique pour décider quelle sous-chaîne spécialisée doit traiter une requête spécifique (par exemple, envoyer une question de mathématiques à une « chaîne Math » et une question d'histoire à une « chaîne Histoire »).
Le principe fondamental : la règle de la chaîne
Les chaînes permettent de combiner plusieurs composants — modèles, prompts et mémoire — en une seule application cohérente. Cette modularité garantit que les tâches complexes peuvent être décomposées en étapes gérables et facilement déboguées.
Astuce pro : Débogage des pipelines
Lorsque vos pipelines deviennent complexes, utilisez
langchain.debug = True. Cette « vision X-ray » vous permet de voir les prompts exacts envoyés et les sorties brutes reçues en arrière-plan à chaque étape de la chaîne.
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>
Question 1
In LangChain, what is the primary difference between a
SimpleSequentialChain and a standard SequentialChain?Challenge: Library Support Router
Design a routing mechanism for a specialized bot.
You are building a support bot for a library.
Define the logic for a
Define the logic for a
RouterChain that distinguishes between "Book Recommendations" and "Operating Hours."
Step 1
Create two prompt templates: one for book suggestions and one for library schedule info.
Solution:
book_template = """You are a librarian. Recommend books based on: {input}"""
schedule_template = """You are a receptionist. Answer hours queries: {input}"""
prompt_infos = [
{"name": "books", "description": "Good for recommending books", "prompt_template": book_template},
{"name": "schedule", "description": "Good for answering operating hours", "prompt_template": schedule_template}
]Step 2
Define the
router_template to guide the LLM on how to classify the user's intent, and initialize the chain.Solution:
router_template = MULTI_PROMPT_ROUTER_TEMPLATE.format(
destinations=destinations_str
)
router_prompt = PromptTemplate(
template=router_template,
input_variables=["input"],
output_parser=RouterOutputParser(),
)
router_chain = LLMRouterChain.from_llm(llm, router_prompt)
chain = MultiPromptChain(
router_chain=router_chain,
destination_chains=destination_chains,
default_chain=default_chain,
verbose=True
)